GrafanaをEC2にインストールしてCloudWatchをみてみる
Grafanaサーバをつくる
- EC2にGrafanaをインストールしてCloudWatchを可視化するまでの手順です。
- EC2インスタンスの標準メトリクスをグラフにしてみます。
- 30分もあればGrafanaで簡単に可視化できます。
Grafanaのグラフ
Grafanaのデモサイトで実際に確認できます。
集約してみる
諸々の事情でモニタリングツールが複数ある場合はGrafanaでまとめてみれるので便利です。例えばZabbixで基本的なメトリクスを取得している環境でCloudWatchで取得しているマネージドサービスのメトリクスや、EC2のステータスチェックのメトリクスを合わせて表示できます。
マネジメントコンソール作業
前提: GrafanaをインストールするEC2インスタンスを作成します。
検証環境
項目 | 値 |
---|---|
OS | Amazon Linux2 |
インスタンスタイプ | t3.small |
Grafana | v7.1.5 |
IAMロール作成
公式ドキュメント参考に進めます。
AWS CloudWatch | Grafana Labs
IAMポリシーを作成します。上記公式サイトに最小権限のポリシーの例が載っておりますのでコピペします。
最小権限のポリシーの例
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowReadingMetricsFromCloudWatch", "Effect": "Allow", "Action": [ "cloudwatch:DescribeAlarmsForMetric", "cloudwatch:DescribeAlarmHistory", "cloudwatch:DescribeAlarms", "cloudwatch:ListMetrics", "cloudwatch:GetMetricStatistics", "cloudwatch:GetMetricData" ], "Resource": "*" }, { "Sid": "AllowReadingLogsFromCloudWatch", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:GetLogGroupFields", "logs:StartQuery", "logs:StopQuery", "logs:GetQueryResults", "logs:GetLogEvents" ], "Resource": "*" }, { "Sid": "AllowReadingTagsInstancesRegionsFromEC2", "Effect": "Allow", "Action": ["ec2:DescribeTags", "ec2:DescribeInstances", "ec2:DescribeRegions"], "Resource": "*" }, { "Sid": "AllowReadingResourcesForTags", "Effect": "Allow", "Action": "tag:GetResources", "Resource": "*" } ] }
GrafanaPolicyと名付け作成しました。
次にIAMロールを作成します。先ほど作成したGrafanaPolicyを紐付け、GrafanaRoleと名付け作成しました。
ロール設定
Grafanaインストール対象のインスタンスにロールを設定。
GrafanaRoleをアタッチします。
Grafanaサーバ上での準備
公式ドキュメントを参考に進めます。
Install on RPM-based Linux | Grafana Labs
リポジトリの追加
$ sudo vi /etc/yum.repos.d/grafana.repo
編集内容
[grafana] name=grafana baseurl=https://packages.grafana.com/oss/rpm repo_gpgcheck=1 enabled=1 gpgcheck=1 gpgkey=https://packages.grafana.com/gpg.key sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt
完成したファイル
$ sudo cat /etc/yum.repos.d/grafana.repo [grafana] name=grafana baseurl=https://packages.grafana.com/oss/rpm repo_gpgcheck=1 enabled=1 gpgcheck=1 gpgkey=https://packages.grafana.com/gpg.key sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt
Grafanaインストール
$ sudo yum install grafana -y $ sudo systemctl daemon-reload $ sudo systemctl start grafana-server $ sudo systemctl status grafana-server $ sudo systemctl enable grafana-server
バージョン確認
$ grafana-cli -v Grafana CLI version 7.1.5
Grafanaを使う
WEBアクセス
http://[ip-address]:3000
にWEBブラウザからアクセスします。
セキュリティグループは3000
ポートを空けます。
初期ログイン画面
admin/admin
が初期ユーザ、パスワードです。
ログインするとパスワードを強制的に変更させられます。
データソース設定
Grafanaはグラフを描画してくれるツールなので表示したいグラフの元データ(メトリクス)の保存先を登録します。ここではCloudWatchを登録します。
左側の歯車ボタンをクリック。
Add data sourceをクリック。
cloudwatch
で検索し、Selectをクリック。
- Auth Providerは
Credentials file
を選択。- IAMロールを設定している場合、Access & secret keyを選択してもTestは通り問題なく使えます。
- Default Regionは
ap-northeast-1
を入力。
Save & Testをクリックし、問題なければ緑帯のData source is working
と表示されます。
これだけでGrafanaでCloudWatchで取得したメトリクスを参照することができます。同じ様にその他モニタリングツールをデータソースに登録すればGrafanaで表示できるようになります。
テンプレートインポート
最後にテストでEC2のグラフ表示させます。ダッシュボードのテンプレートをインポートし簡単にグラフを表示させます。
テンプレートは下記サイトで検索します。
Grafana Dashboards - discover and share dashboards for Grafana. | Grafana Labs
EC2で検索しEC2用のダッシュボードを探します。今回はサンプルで一番下のものを使います。
リンクを開きIDをコピーします。
左端の+を選択し、Importをクリック。
コピーしたIDを貼り付けLoadをクリック。
Importをクリック。
ダッシュボードをみてみる
Tag Nameをクリックするとインスタンスの一覧が表示されます。grafana-server
自分自身を表示してみます。
変化がなく面白くなかったのでCPUに負荷かけました。
インスタンスに紐づくEBSのメトリクスも確認できます。
自動更新の注意
右上からグラフの自動更新間隔を変更できます。5秒にするとCloudWatchのAPIを叩く回数がそれだけ増えます。課金対象ですので自動更新を使用する場合はほどよい更新間隔を設定するとよろしいかと思います。
おわりに
先日TwitterかなにかでGrafanaからSlackでアラートを飛ばした際にグラフのイメージを添付できることを知り、試したくて久々にサーバたてました。以前はZabbix、Prometheusと、CloudWatchをまとめてGrafanaでモニタリングしていました。Zabbix2.2が現役で諸々の事情により引退も更新もできなく、非常に趣のあるグラフなためGrafanaに頑張ってもらいました。Grafana7.代になってから触る機会がなかったのでいい機会だと思って遊んでみようと思います。
以上、コンサル部大村@網走でした。